home *** CD-ROM | disk | FTP | other *** search
/ Acorn RISC PD-CD 1 / Acorn RISC PD-CD 1.iso / fractals / _fracvisit / maths < prev   
Encoding:
Text File  |  1991-10-03  |  6.7 KB  |  252 lines

  1.  1) THE ORIGINAL MANDELBROT
  2.     Z(n+1) = Z(n)^2 + C
  3.     Xmin=-2.25 :Xsize=3 :Xmax=0.75
  4.     Ymin=-1.5  :Ysize=3 :Ymax=1.5
  5.  
  6.           Z(n+1) = Z(n)^2 + C  
  7.             Z(n) = (x + yi)   
  8.                C = P + Qi
  9.     xnew + ynewi = (x + yi)^2 + P + Qi
  10.                  = x^2 - y^2 + 2*x*yi + P + Qi
  11.             xnew = x^2 - y^2 + P
  12.             ynew = 2*x*y + Q
  13.  
  14.     ITERATION IN BASIC     
  15.      AT EACH (x,y)
  16.      depth=0 :u=0 :v=0   ; if Julia then u=x :v=y :x=real :y=imag
  17.      REPEAT
  18.      usq = u*u
  19.      vsq = v*v
  20.      sqsum = usq + vsq
  21.      REM checkpoint REM
  22.      v = u*(v + v) + y
  23.      u = usq - vsq + x
  24.      N% = N%+1
  25.      UNTIL depth=maxiter% OR sqsum>4
  26.  
  27.     ITERATION IN ARM CODE
  28.      LDR depth,#0: LDR u,#0: LDR v,#0
  29.      .loopstart
  30.      FNmulti(uu,u,u) \test result, Bmaybe exit
  31.      FNmulti(vv,v,v) \ditto
  32.      .calc_heart
  33.      \\
  34.      FNmulti(r,u,v)
  35.      ADD v,y,r,LSL#1
  36.      SUB u,uu,vv
  37.      ADD u,u,x
  38.      \\
  39.      \test depth
  40.      \Bmaybe loopstart
  41.     .exit
  42.  
  43.  2) SELF SQUARED DRAGONS
  44.     Z(n+1) = C * Z(n) * (1 - Z(n))
  45.     Xmin=-2.25  :Xsize=6.5  :Xmax=4.25
  46.     Ymin=-1.625 :Ysize=3.25 :Ymax=1.625
  47.  
  48.           Z(n+1) = C * Z(n) * (1 - Z(n)) 
  49.             Z(n) = (x + yi)   
  50.                C = P + Qi
  51.     xnew + ynewi = (P + Qi) * (x + yi) * (1 - x - yi)
  52.                  = (P + Qi) * (x - x^2 + y^2 - 2*x*yi + yi)
  53.  
  54.     LET    tempx = x - (x^2 - y^2)
  55.            tempy = 2*x*y - y
  56.  
  57.     xnew + ynewi = (P + Qi)*(tempx - tempy)
  58.             xnew = P*tempx + Q*tempy
  59.             ynew = Q*tempx - P*tempy
  60.  
  61.   ITERATION IN BASIC 
  62.      REM as Mandelbrot but u=0.5
  63.      REM checkpoint REM
  64.      A = u - usq + vsq
  65.      B = u*v
  66.      B = B + B - v
  67.      u = P*A - Q*B
  68.      v = P*B + Q*A
  69.  
  70.     ITERATION IN ARM CODE
  71.      \as Mandelbrot but LDR u,half
  72.      .calc_heart
  73.      \\
  74.      SUB r,vv,uu                 \tempsq
  75.      ADD r,r,u                   \tempsq+X
  76.      FNmulti(m,u,v)              \tempxy
  77.      RSB m,v,m,LSL#1             \2*tempxy-Y
  78.      FNmulti(uu,x,r)             \Q*(tempsq+X)
  79.      FNmulti(vv,y,m)             \P*(2*tempxy-Y)
  80.      ADD u,uu,vv                 \Q*(tempsq+X)+P*(2*tempxy-Y)
  81.      FNmulti(uu,y,r)             \P*(tempsq+X)
  82.      FNmulti(vv,x,m)             \Q*(2*tempxy-Y)
  83.      SUB v,uu,vv                 \Q*(2*tempxy-Y)-P*(tempsq+X)
  84.      \\
  85.  
  86.  
  87.  3) CUBIC MANDELBROID
  88.     Z(n+1) = Z(n)^4 + C
  89.     Xmin=-1.2 :Xsize=2.4 :Xmax=1.2
  90.     Ymin=-1.5 :Ysize=3.0 :Ymax=1.5
  91.   
  92.           Z(n+1) = Z(n)*Z(n)*Z(n) + C
  93.             Z(n) = (x + yi)   
  94.                C = P + Qi
  95.     xnew + ynewi = (x + yi)^3 + P + Qi
  96.                  = (x + yi)*(x^2 - y^2 + 2*x*yi) + P + Qi
  97.                  = x^3 + 3*x^2*yi - 3*x*y^2 - y^3i + P + Qi
  98.             xnew = x^3 - 3*x*y^2 + P
  99.             ynew = 3*x^2*y -y^3 + Q  = y*(3*x^2 - y^2) + Q
  100.  
  101.   ITERATION IN BASIC 
  102.      REM as Mandelbrot
  103.      REM checkpoint REM
  104.      u3 = usq*u
  105.      v3 = vsq*v
  106.      A = u3 - 3*u*vsq + x
  107.      B = 3*v*usq - v3 + y
  108.      u = A
  109.      v = B
  110.  
  111.     ITERATION IN ARM CODE
  112.      \as Mandelbrot
  113.      .calc_heart
  114.      \\
  115.      FNmulti(n,uu,u)   \u3
  116.      FNmulti(m,u,vv)   \u*vsq
  117.      ADD m,m,m,LSL#1   \3*u*vsq 
  118.      SUB m,n,m         \u3-3*u*vsq 
  119.      ADD r,m,x         \A
  120.      FNmulti(n,v,vv)   \v3
  121.      FNmulti(m,uu,v)   \v*usq
  122.      ADD m,m,m,LSL#1   \3*v*usq
  123.      SUB m,m,n         \3*v*usq-v3
  124.      ADD m,m,y         \B
  125.      MOV u,r
  126.      MOV v,m
  127.      \\
  128.  4) QUARTIC MANDELBROID
  129.     Z(n+1) = Z(n)^4 + C
  130.     Xmin=-1.2 :Xsize=2.4 :Xmax=1.2
  131.     Ymin=-1.5 :Ysize=3.0 :Ymax=1.5
  132.  
  133.           Z(n+1) = Z(n)*Z(n)*Z(n)*Z(n) + C
  134.             Z(n) = (x + yi)   
  135.                C = P + Qi
  136.     xnew + ynewi = (x + yi)^4 + P + Qi
  137.                  = (x + yi)*(x^3 + 3*x^2*yi - 3*x*y^2  - y^3i) + P + Qi
  138.                  = x^4 + 4*x^3*yi - 6*x^2*y^2 - 4*x*y^3i + y^4 + P + Qi
  139.             xnew = x^4 - 6*x^2*y^2 + y^4 + P
  140.             ynew = 4*x^3*y -4*x*y^3 + Q  = 4*x*y*(x^2 - y^2) + Q
  141.  
  142.   ITERATION IN BASIC
  143.      REM as Mandelbrot 
  144.      REM checkpoint REM
  145.      A = usq*usq + 6*usq*vsq + vsq*vsq + x
  146.      B = 4*u*v*(usq - vsq) + y
  147.      u = A
  148.      v = B
  149.  
  150.     ITERATION IN ARM CODE
  151.      \as Mandelbrot
  152.      .calc_heart
  153.      \\
  154.      SUB n,uu,vv       \usq-vsq
  155.      FNmulti(m,u,v)    \u*v
  156.      FNmulti(r,n,m)    \u*v*(usq-vsq)
  157.      ADD v,y,r,LSL#2   \4*u*v*(usq-vsq)+y
  158.      FNmulti(n,uu,uu)  \usq*usq
  159.      FNmulti(m,vv,vv)  \vsq*vsq
  160.      ADD u,n,m         \usq*usq+vsq*vsq
  161.      ADD u,u,x         \usq*usq+vsq*vsq+x
  162.      FNmulti(n,uu,vv)  \usq*vsq
  163.      MOV m,n,LSL#2     \4*usq*vsq
  164.      MOV n,n,LSL#1     \2*usq*vsq
  165.      ADD n,n,m         \6*usq*vsq
  166.      SUB u,u,n         \usq*usq+vsq*vsq+x-6*usq*vsq
  167.      \\
  168.   
  169.  5) IKENAGA
  170.     Z(n+1) = Z(n)^3 + (C - 1)*Z(n) - C
  171.     Xmin=-1.3 :Xmax=1.0 :Xsize=2.3
  172.     Ymin=-1.0 :Ymax=1.0 :Ysize=-2.0
  173.  
  174.           Z(n+1) = Z(n)^3 + (C - 1)*Z(n) - C
  175.             Z(n) = (x + yi)   
  176.                C = P + Qi
  177.     xnew + ynewi = (x + yi)^3 + (P + Qi)*(x + yi) - (P + Qi)
  178.                  = x^3 + 3*x^2*yi - 3*x*y^2 - y^3i + P*x + P*yi
  179.                      + Q*xi - Q*y  - P - Qi
  180.  
  181.             xnew = x^3 -3*x*y^2 + P*x - Q*y - P
  182.             ynew = 3*x^2*y -y^3 + P*y + Q*x - Q 
  183.  
  184.   ITERATION IN BASIC
  185.      REM as Mandelbrot 
  186.      REM checkpoint REM
  187.      A = u*(uu - 3*vv + x - 1) - v*y - x
  188.      B = v*(3*uu - vv + x - 1) + u*y - y 
  189.      u = A
  190.      v = B
  191.  
  192.  
  193.     ITERATION IN ARM CODE
  194.      \as Mandelbrot
  195.      .calc_heart
  196.      \\
  197.      ADD r,vv,vv                 \2*vv
  198.      ADD r,r,vv                  \3*vv
  199.      SUB r,uu,r                  \uu-3*vv
  200.      ADD r,r,x                   \uu-3*vv+x
  201.      FNmulti(m,r,u)              \u*(uu-3*vv+x)
  202.      SUB m,m,u                   \u*(uu-3*vv+x-1)
  203.      FNmulti(n,v,y)              \v*y
  204.      ADD n,n,x                   \v*y+x
  205.      SUB m,m,n                   \u*(uu-3*vv+x-1)-v*y-x
  206.      \
  207.      ADD r,uu,uu                 \2*uu
  208.      ADD r,r,uu                  \3*uu
  209.      SUB r,r,vv                  \3*uu-vv
  210.      ADD r,r,x                   \3*uu-vv+x
  211.      FNmulti(n,r,v)              \v*(3*uu-vv+x)
  212.      SUB n,n,v                   \v*(3*uu-vv+x-1)
  213.      FNmulti(r,u,y)              \u*y
  214.      SUB r,r,y                   \u*y-y
  215.      ADD v,r,n                   \v*(3*uu-vv+x-1)+u*y-y
  216.      MOV u,m
  217.      \\
  218.  
  219.  
  220.  6) USHIKI'S PHOENIX
  221.     Z(n+1)=Z(n)*Z(n)*P*Z(n-1)+Q
  222.     Xmin=-2.1: Xsize=3.6: Xmax=1.5
  223.     Ymin=-2.0: Ysize=4.0: Ymax=2.0
  224.  
  225.   ITERATION IN BASIC
  226.      REM as Mandelbrot 
  227.      REM checkpoint REM
  228.      vtemp = 2*u*v + y*vprev 
  229.      utemp = usq - vsq + x + y*uprev
  230.      uprev=u
  231.      vprev=v
  232.      u=utemp
  233.      v=vtemp
  234.  
  235.     ITERATION IN ARM CODE
  236.      \as Mandelbrot but   LDR n,#0 : LDR m,#0
  237.      .calc_heart
  238.      \\
  239.      SUB r,uu,vv              \uu-vv
  240.      FNmulti(uu,y,n)          \y*uprev
  241.      ADD r,r,uu               \uu-vv+y*uprev
  242.      ADD r,r,x                \utemp
  243.      FNmulti(uu,u,v)          \u*v
  244.      FNmulti(vv,y,m)          \y*vprev
  245.      ADD vv,vv,uu,LSL#1       \vtemp     
  246.      MOV n,u
  247.      MOV m,v
  248.      MOV u,r
  249.      MOV v,vv
  250.      \\
  251.  
  252.